// --------------------------------------------------------------------------------------------------------------------
// <copyright file="IMp3FileSystemManager.cs" company="GT">
//   Gunther Taborga
// </copyright>
// <summary>
//   Defines the IMp3FileSystemManager type.
// </summary>
// --------------------------------------------------------------------------------------------------------------------
namespace BatchID3.Mp3
{
    using System;
    using System.Collections.Generic;
    using System.IO;

    using BatchID3.Enumerations;
    using BatchID3.FileSystem;

    public interface IMp3FileSystemManager
    {
        char EscapeCharacter { get; }

        IFileSystemManager FileSystem { get; }

        void Delete(IMp3Entity mp3);

        IEnumerable<string> GetMp3FilePaths(string directory, SearchOption searchOption);

        string GetNewDirectoryFromId3(string newDirectory, IMp3Entity mp3Entity, IEnumerable<TagToken> tagTokens);

        string GetNewFileNameFromId3(IMp3Entity mp3Entity, IEnumerable<TagToken> tagTokens, char delimiter);

        string RenameById3(IMp3Entity mp3Entity, IEnumerable<TagToken> tagTokens, char delimiter);

        string SortById3(IMp3Entity mp3Entity, IEnumerable<TagToken> tagTokens, string destinationDirectory = "");

        void SetTagValue(IMp3Entity mp3Entity, TagToken tagToken, string prefix, string value, string suffix);
    }
}